package com.ruoyi.project.mapper;

import java.util.List;

import com.ruoyi.project.domain.CompomentInfo;
import com.ruoyi.project.domain.PartstInfo;
import com.ruoyi.project.dto.PartstInfoDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

/**
 * 零件信息Mapper接口
 * 
 * @author ruoyi
 * @date 2022-08-27
 */
public interface PartstInfoMapper 
{
    /**
     * 查询零件信息
     * 
     * @param id 零件信息主键
     * @return 零件信息
     */
    public PartstInfo selectPartstInfoById(Long id);

    /**
     * 查询零件信息列表
     * 
     * @param partstInfo 零件信息
     * @return 零件信息集合
     */
    public List<PartstInfo> selectPartstInfoList(PartstInfo partstInfo);

    /**
     * 新增零件信息
     * 
     * @param partstInfo 零件信息
     * @return 结果
     */
    public int insertPartstInfo(PartstInfo partstInfo);

    /**
     * 修改零件信息
     * 
     * @param partstInfo 零件信息
     * @return 结果
     */
    public int updatePartstInfo(PartstInfo partstInfo);

    /**
     * 删除零件信息
     * 
     * @param id 零件信息主键
     * @return 结果
     */
    public int deletePartstInfoById(Long id);

    /**
     * 批量删除零件信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePartstInfoByIds(Long[] ids);

    CompomentInfo selectIsCompomentInfo(
                                        @Param("projectNo") String projectNo,
                                        @Param("compomentName") String compomentName,
                                        @Param("specifications") String specifications,
                                        @Param("texture") String texture,
                                        @Param("length") Long length,
                                        @Param("netWeight") Double netWeight);

    PartstInfo selectIsPartstInfo(
                                  @Param("projectNo") String projectNo,
                                  @Param("partsName") String partsName,
                                  @Param("specifications") String specifications,
                                  @Param("texture") String texture,
                                  @Param("length") Long length,
                                  @Param("netWeight") Double netWeight);

    void updatePartstModelInfo(@Param("projectNo") String projectNo,
                               @Param("buildNo") String buildNo,
                               @Param("floor") String floor,
                               @Param("compomentNo") String compomentNo,
                               @Param("bomNo") String bomNo);

    List<PartstInfo> selectPartstInfoListByBomNo(@Param("bomNo") String bomNo);

    void insertPartstInfoDTO(PartstInfoDTO p);

    PartstInfo selectPartstInfoByDTO(PartstInfoDTO p);

    void updatePartstInfoDTO(PartstInfoDTO p);
}
